iT邦幫忙

2

MSSQL 以字串來分類

  • 分享至 

  • xImage
  •  

table INVMB 有一個欄位 MB002 是品名,現想以品名來分類(另新增一個欄位):
品名內有 '箱' 就出現 '紙箱'
品名內有 '夾' 就出現 '夾鏈袋'
品名內有 '鋁' 就出現 '鋁箔包'

請問大大要如何做用 case 嗎


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

1
小山丘
iT邦新手 2 級 ‧ 2022-06-21 12:12:06

應該要去問答版,然後用CASE是可行的

1
柳丁柚
iT邦新手 1 級 ‧ 2022-06-21 12:23:43

create table INVMB (
MB002 nvarchar(50)
);
insert into INVMB
values('箱test')
,('夾test')
,('鋁test')
,('notest');

SELECT MB002,CASE WHEN MB002 like '%箱%' Then '箱子'
WHEN MB002 like '%夾%' Then '夾鏈袋'
WHEN MB002 like '%鋁%' Then '鋁箔包'
ELSE '查無品名' END AS 品名 from INVMB

drop table INVMB

看更多先前的回應...收起先前的回應...
easypolo iT邦新手 5 級 ‧ 2022-06-21 14:36:14 檢舉

謝謝! 我沒說明清楚,應該是有MB001=>品號
MB002=>品名 (品名的敘述是 '品號'+'XXXX紙箱')
大大的結果是品號全部,我要的是僅秀出'紙箱'

柳丁柚 iT邦新手 1 級 ‧ 2022-06-21 14:48:03 檢舉

不懂你的要求 要不你 create 一張測試資料?
如果僅要查詢時分組 作法應該差不多

easypolo iT邦新手 5 級 ‧ 2022-06-21 16:19:24 檢舉

creat table INVMB (MB001 nvarchar(50),MB002 nvarchar(50))
insert into INVMB
values(TH030100001,TH030100001紙箱),
values(TH030100002,TH030100002鋁箔袋),
values(TH030100003,TH030100003烏拉拉彩盒)

如何建立變數@strN ,@strR 回傳@strN=charindex('紙',MB002)
@strR=2
回傳@strN=charindex('鋁',MB002)
@strR=3 ,select substring(MB002,@strN,@StrR)

柳丁柚 iT邦新手 1 級 ‧ 2022-06-22 11:58:23 檢舉

1.語法有錯
2.您給的要求我有點難理解,是想要建立兩個變數
@strN 裝字串起始值, @strR 依品名分類SET長度?
3.姑且寫了一版看看是不是您需要的,以目前的資訊我只能幫到這裡了

柳丁柚 iT邦新手 1 級 ‧ 2022-06-22 11:59:35 檢舉
CREATE TABLE INVMB (MB001 NVARCHAR(50),MB002 NVARCHAR(50))
INSERT INTO INVMB
VALUES('TH030100001','TH030100001紙箱'),
('TH030100002','TH030100002鋁箔袋'),
('TH030100003','TH030100003烏拉拉彩盒'),
('TH030100004','TH030100004夾鏈袋'),
('TH030100005','TH030100005大紙箱'),
('TH030100006','TH030100006小紙箱')

--DECLARE @strR INT,@strN INT,@strt NVARCHAR(30)
DECLARE @str1 NVARCHAR(20),@str2 NVARCHAR(20),@str3 NVARCHAR(20)
SET @str1 = '紙箱';
SET @str2 = '鋁箔袋';
SET @str3 = '夾鏈袋';

SELECT CASE WHEN MB002 like '%'+@str1+'%' Then @str1
WHEN MB002 like '%'+@str2+'%' Then @str2
WHEN MB002 like '%'+@str3+'%'  Then @str3
ELSE '查無品名' END AS 分類
FROM INVMB

DROP TABLE INVMB
easypolo iT邦新手 5 級 ‧ 2022-07-04 10:20:32 檢舉

感謝您!!!

我要留言

立即登入留言